Tensorlistgetitem
从张量列表中获取指定索引的张量数据。该算子将输入张量列表中的特定元素复制到输出张量中,支持多种数据类型。
\[\text{output\_tensor} = \text{input\_tensor\_list}[\text{index}]\]
其中 input_tensor_list 是输入的张量列表,index 是要获取的元素索引,output_tensor 是输出张量。
- 输入:
src - 输入张量指针,指向要获取的张量数据。
dst - 输出张量指针,用于存储获取的张量数据。
data_type - 数据类型对应的字节数,如果为0,表示kTypeUnknown(未知类型)。
length - 元素个数,默认dst和src元素个数相等。
core_mask - 核掩码(int),仅共享存储版本需要。
- 输出:
dst - 输出张量指针,存储从输入张量列表获取的数据。
- 支持平台:
FT78NEMT7004
备注
该算子不区分具体的数据类型,数据类型信息通过data_type参数传递
当data_type为0(kTypeUnknown)时,算子会将输出张量的内存清零
当data_type不为0时,算子会按字节复制数据
调用前需要确保dst指向的内存空间足够大(至少length个元素)
共享存储版本:
-
void tensorlistgetitem_s(void *src, void *dst, int data_type, int length, int core_mask)
C调用示例(共享存储版本):
1//FT78NE示例
2#include <stdio.h>
3#include <tensorlistgetitem.h>
4
5int main(int argc, char* argv[]) {
6 // 假设在DDR空间
7 float *src = (float *)0xA0000000; // 输入张量数据
8 float *dst = (float *)0xB0000000; // 输出张量数据
9 int data_type = 4; // float类型,4字节
10 int length = 10; // 10个元素
11 int core_mask = 0xff; // 核掩码
12
13 // 调用共享存储版本的函数
14 tensorlistgetitem_s(src, dst, data_type, length, core_mask);
15
16 return 0;
17}
共享存储版本:
-
void tensorlistgetitem_p(void *src, void *dst, int data_type, int length)
C调用示例(私有存储版本):
1#include <stdio.h>
2#include <tensorlistgetitem.h>
3
4int main(int argc, char* argv[]) {
5 void *src = (void *)0x10000000;
6 void *dst = (void *)0x10010000;
7 int data_type = 0; // kTypeUnknown
8 int length = 10; // 10个元素(以字节为单位)
9
10 // 当data_type为0时,dst将被清零
11 tensorlistgetitem_p(src, dst, data_type, length);
12
13 return 0;
14}